package com.microservice.base.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.util.Date;

/**
 * 学生档案信息
 *
 * @author zq
 * @email 513973172@qq.com
 * @date 2019-08-15 17:21:36
 */
@Data
public class InfoStudent implements Serializable {
    private static final long serialVersionUID = 1L;

    //主键
    @Length(min = 0, max = 36)
    @ApiModelProperty(value = "主键", notes = "主键", allowEmptyValue = false, required = false)
    private String id;
    //学校编码
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "学校编码", notes = "学校编码", allowEmptyValue = false, required = false)
    private String schoolCode;
    //学籍号
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "学籍号", notes = "学籍号", allowEmptyValue = false, required = false)
    private String studentNumber;
    //学号
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "学号", notes = "学号", allowEmptyValue = false, required = false)
    private String studentCode;
    //学生考号
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "学生考号", notes = "学生考号", allowEmptyValue = false, required = false)
    private String examNumber;
    //身份证号
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "身份证号", notes = "身份证号", allowEmptyValue = false, required = false)
    private String idNo;
    //身份证件有效期
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "身份证件有效期", notes = "身份证件有效期", allowEmptyValue = false, required = false)
    private String validityPeriod;
    //独生子女标志
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "独生子女标志", notes = "独生子女标志", allowEmptyValue = false, required = false)
    private String onlyChild;
    //班内组
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "班内组", notes = "班内组", allowEmptyValue = false, required = false)
    private String groupNo;
    //班内学号
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "班内学号", notes = "班内学号", allowEmptyValue = false, required = false)
    private String classNo;
    //学生类别码
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "学生类别码", notes = "学生类别码", allowEmptyValue = false, required = false)
    private String studentCategory;
    //头像
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "头像", notes = "头像", allowEmptyValue = false, required = false)
    private String avatar;
    //邮箱
    @Length(min = 0, max = 40)
    @ApiModelProperty(value = "邮箱", notes = "邮箱", allowEmptyValue = false, required = false)
    private String email;
    //毕业学校
    @Length(min = 0, max = 200)
    @ApiModelProperty(value = "毕业学校", notes = "毕业学校", allowEmptyValue = false, required = false)
    private String graduateSchool;
    //入学时间
    @ApiModelProperty(value = "入学时间", notes = "入学时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date entranceTime;

    //学生入学年份
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "学生入学年份", notes = "学生入学年份", allowEmptyValue = false, required = false)
    private String studentGread;
    //姓名
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "姓名", notes = "姓名", allowEmptyValue = false, required = false)
    private String name;
    //英文名
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "英文名", notes = "英文名", allowEmptyValue = false, required = false)
    private String englishName;
    //姓名拼音
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "姓名拼音", notes = "姓名拼音", allowEmptyValue = false, required = false)
    private String spellName;
    //曾用名
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "曾用名", notes = "曾用名", allowEmptyValue = false, required = false)
    private String formerName;
    //籍贯
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "籍贯", notes = "籍贯", allowEmptyValue = false, required = false)
    private String nativePlace;
    //国籍/地区码
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "国籍/地区码", notes = "国籍/地区码", allowEmptyValue = false, required = false)
    private String nationality;
    //户口性质码
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "户口性质码", notes = "户口性质码", allowEmptyValue = false, required = false)
    private String accountCode;
    //是否流动人口
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "是否流动人口", notes = "是否流动人口", allowEmptyValue = false, required = false)
    private String migration;
    //户口所在地
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "户口所在地", notes = "户口所在地", allowEmptyValue = false, required = false)
    private String domicilePlace;
    //特长
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "特长", notes = "特长", allowEmptyValue = false, required = false)
    private String speciality;
    //身份证件类型码
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "身份证件类型码", notes = "身份证件类型码", allowEmptyValue = false, required = false)
    private String idType;
    //婚姻状况码
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "婚姻状况码", notes = "婚姻状况码", allowEmptyValue = false, required = false)
    private String maritalCode;
    //港澳台侨码
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "港澳台侨码", notes = "港澳台侨码", allowEmptyValue = false, required = false)
    private String emigrantCode;
    //健康状况吗
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "健康状况吗", notes = "健康状况吗", allowEmptyValue = false, required = false)
    private String healthCode;
    //信仰宗教码
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "信仰宗教码", notes = "信仰宗教码", allowEmptyValue = false, required = false)
    private String religionCode;
    //血型码
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "血型码", notes = "血型码", allowEmptyValue = false, required = false)
    private String bloodCode;
    //name汉字首字母
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "name汉字首字母", notes = "name汉字首字母", allowEmptyValue = false, required = false)
    private String shortCode;
    //性别 0:未知 1：男 2：女 9 未说明
    @Length(min = 0, max = 4)
    @ApiModelProperty(value = "性别 0:未知 1：男 2：女 9 未说明", notes = "性别 0:未知 1：男 2：女 9 未说明", allowEmptyValue = false, required = false)
    private String sex;
    //民族
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "民族", notes = "民族", allowEmptyValue = false, required = false)
    private String nation;
    //政治面貌
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "政治面貌", notes = "政治面貌", allowEmptyValue = false, required = false)
    private String politicalStatus;
    //出生年月
    @ApiModelProperty(value = "出生年月", notes = "出生年月", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthday;

    //就读类别
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "就读类别", notes = "就读类别", allowEmptyValue = false, required = false)
    private String attendingType;
    //通信地址
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "通信地址", notes = "通信地址", allowEmptyValue = false, required = false)
    private String mailingAddress;
    //邮政编码
    @Length(min = 0, max = 20)
    @ApiModelProperty(value = "邮政编码", notes = "邮政编码", allowEmptyValue = false, required = false)
    private String postalCode;
    //主页地址
    @Length(min = 0, max = 500)
    @ApiModelProperty(value = "主页地址", notes = "主页地址", allowEmptyValue = false, required = false)
    private String businessPage;
    //电话
    @Length(min = 0, max = 13)
    @ApiModelProperty(value = "电话", notes = "电话", allowEmptyValue = false, required = false)
    private String tel;
    //住址
    @Length(min = 0, max = 100)
    @ApiModelProperty(value = "住址", notes = "住址", allowEmptyValue = false, required = false)
    private String address;
    //其他1
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "其他1", notes = "其他1", allowEmptyValue = false, required = false)
    private String other1;
    //其他2
    @Length(min = 0, max = 50)
    @ApiModelProperty(value = "其他2", notes = "其他2", allowEmptyValue = false, required = false)
    private String other2;
    // 人员状态 0、正常，1毕业，2、停用，3、离职，4、转学，5、开除,6、新生，7、新生未报名(已导入),8新生已编辑（未确定）9新生已报名10学校已确认报名
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = " 人员状态 0、毕业，1，正常2、停用，3、离职，4、转学，5、开除,6、新生入学7,未提交8以保存9已提交", notes = "人员状态 0、毕业，1，正常2、停用，3、离职，4、转学，5、开除,6、新生入学7,未提交8以保存9已提交", allowEmptyValue = false, required = false)
    private String status;
    //删除状态（0：正常，1：删除）
    @Length(min = 0, max = 1)
    @ApiModelProperty(value = "删除状态（0：正常，1：删除）", notes = "删除状态（0：正常，1：删除）", allowEmptyValue = false, required = false)
    private String deleted;
    //备注
    @Length(min = 0, max = 255)
    @ApiModelProperty(value = "备注", notes = "备注", allowEmptyValue = false, required = false)
    private String remarks;
    //创建者
    @Length(min = 0, max = 36)
    @ApiModelProperty(value = "创建者", notes = "创建者", allowEmptyValue = false, required = false)
    private String createUser;
    //创建时间
    @ApiModelProperty(value = "创建时间", notes = "创建时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    //更新人
    @Length(min = 0, max = 36)
    @ApiModelProperty(value = "更新人", notes = "更新人", allowEmptyValue = false, required = false)
    private String updateUser;
    //更新时间
    @ApiModelProperty(value = "更新时间", notes = "更新时间", allowEmptyValue = false, required = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;


    //更新标志位
    @Length(min = 0, max = 10)
    @ApiModelProperty(value = "更新标志位", notes = "更新标志位", allowEmptyValue = false, required = false)
    private String syncFlag;
    //一卡通号
    private String icardNo;
    //一卡通物理编号
    private String cardHex;
    //卡类型
    private String cardType;
    //卡片状态 0正常，1挂失，2停用，3冻结，99未办卡
    private String cardStatus;
    //有效截止时间
    private Date invalidTime;

    //班级ID
    private String gradeId;
    private String classId;
    private String oldClassId;
    private String gradeName;
    private String className;
    //入学年份
    private String itemValue;
    private String openId;
}
